package edu.maimonides.ejercicios.ides2.gui;

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import edu.maimonides.ejercicios.ides2.Calculadora;
import edu.maimonides.ejercicios.ides2.gui.operaciones.OperacionDividir;
import edu.maimonides.ejercicios.ides2.gui.operaciones.OperacionMultiplicar;
import edu.maimonides.ejercicios.ides2.gui.operaciones.OperacionResta;
import edu.maimonides.ejercicios.ides2.gui.operaciones.OperacionSuma;

public class CalculadoraViewSwing extends JFrame implements CalculadoraView{

	private JTextField val1;
	private JTextField val2;
	private JButton multiplicar;
	private JButton dividir;
	private JButton sumar;
	private JButton restar;
	private JLabel resultado;

	public void mostrarCalculadora(Calculadora calculadora) {
		JFrame frame = new JFrame("Calculadora");
		frame.setLayout(new FlowLayout());
		frame.getContentPane().setLayout(new FlowLayout(FlowLayout.LEADING));
		
		createControls();
		addControls(frame);
		addListeners(calculadora);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}

	public void mostrarValor(String valor){
		resultado.setText(valor);
	}

	public void mostrarError(String error){
		resultado.setText("");
		JOptionPane.showMessageDialog(this, error);
	}
	private void addListeners(Calculadora calculadora) {
		sumar.addActionListener(new AccionCalculadora(val1,val2, this, new OperacionSuma(calculadora)));
		restar.addActionListener(new AccionCalculadora(val1,val2, this, new OperacionResta(calculadora)));
		dividir.addActionListener(new AccionCalculadora(val1,val2, this, new OperacionDividir(calculadora)));
		multiplicar.addActionListener(new AccionCalculadora(val1,val2, this, new OperacionMultiplicar(calculadora)));
	}

	protected void addControls(JFrame frame) {
		frame.getContentPane().add(val1);
		frame.getContentPane().add(val2);
		frame.getContentPane().add(multiplicar);
		frame.getContentPane().add(dividir);
		frame.getContentPane().add(sumar);
		frame.getContentPane().add(restar);
		frame.getContentPane().add(resultado);
	}

	protected void createControls() {
		val1 = new JTextField(10);
		val2 = new JTextField(10);
		multiplicar = new JButton("*");
		dividir = new JButton("/");
		sumar = new JButton("+");
		restar = new JButton("-");
		resultado = new JLabel();
		resultado.setText("            ");
	}
	
}
